package com.zzq.my.jetpacks.net.entity

import java.io.Serializable

/**
 * 描述：抽象出后台接口返回的数据格式
 * 基于后台返回的基类，根据不同的结果，定义不同的状态数据类。
 * 作者：zhuangzeqin
 * 时间: 2021/11/5-13:48
 * 邮箱：zzq@eeepay.cn
 * 备注:
 */
open class ApiResponse<T>(
    open val code: Int? = null,//业务标识码，200
    open val message: String? = null,//错误提示语
    open val data: T? = null,//泛型T 数据
    open val count: Int? = null,//数据数量
    open val error: Throwable? = null,//异常信息
    open val success: Boolean? = false//是否成功； true 代表成功； false 代表不成功

) : Serializable {
}

/* ------注释说明---成功返回的数据----- */
data class ApiSuccessResponse<T>(
    override val code: Int?,
    override val message: String?,
    override val data: T?,
    override val count: Int?
) : ApiResponse<T>(code = code, message = message, data = data, count = count)

/* ------注释说明--失败返回的数据------ */
data class ApiFailedResponse<T>(
    override val code: Int?, override val message: String?, override val data: T?,
    override val count: Int?
) : ApiResponse<T>(code = code, message = message, data = data, count = count)

/* ------注释说明--返回空的数据------ */
class ApiEmptyResponse<T> : ApiResponse<T>()
/* ------注释说明--异常错误的返回的------ */
data class ApiErrorResponse<T>(val throwable: Throwable) : ApiResponse<T>(error = throwable)